<!DOCTYPE html>
<html>

<head>
  <title>Quarkus - Using Blaze-Persistence</title>
  <script id="adobe_dtm" src="https://www.redhat.com/dtm.js" type="text/javascript"></script>
  <script src="/assets/javascript/highlight.pack.js" type="text/javascript"></script>
  <META HTTP-EQUIV='Content-Security-Policy' CONTENT="default-src 'none'; script-src 'self' 'unsafe-eval' 'sha256-ANpuoVzuSex6VhqpYgsG25OHWVA1I+F6aGU04LoI+5s=' 'sha256-ipy9P/3rZZW06mTLAR0EnXvxSNcnfSDPLDuh3kzbB1w=' js.bizographics.com https://www.redhat.com assets.adobedtm.com jsonip.com https://ajax.googleapis.com https://www.googletagmanager.com https://www.google-analytics.com https://use.fontawesome.com; style-src 'self' https://fonts.googleapis.com https://use.fontawesome.com; img-src 'self' *; media-src 'self' ; frame-src https://www.googletagmanager.com https://www.youtube.com; frame-ancestors 'none'; base-uri 'none'; object-src 'none'; form-action 'none'; font-src 'self' https://use.fontawesome.com https://fonts.gstatic.com;">
  <META HTTP-EQUIV='X-Frame-Options' CONTENT="DENY">
  <META HTTP-EQUIV='X-XSS-Protection' CONTENT="1; mode=block">
  <META HTTP-EQUIV='X-Content-Type-Options' CONTENT="nosniff">
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <meta name="description" content="Quarkus: Supersonic Subatomic Java">
  <meta name="twitter:card" content="summary_large_image">
  <meta name="twitter:site" content="@QuarkusIO"> 
  <meta name="twitter:creator" content="@QuarkusIO">
  <meta property="og:url" content="https://quarkus.io/guides/blaze-persistence" />
  <meta property="og:title" content="Quarkus - Using Blaze-Persistence" />
  <meta property="og:description" content="Quarkus: Supersonic Subatomic Java" />
  <meta property="og:image" content="/assets/images/quarkus_card.png" />
  <link rel="canonical" href="https://quarkus.io/guides/blaze-persistence">
  <link rel="shortcut icon" type="image/png" href="/favicon.ico" >
  <link rel="stylesheet" href="https://quarkus.io/guides/stylesheet/config.css" />
  <link rel="stylesheet" href="/assets/css/main.css" />
  <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.1.0/css/all.css" integrity="sha384-lKuwvrZot6UHsBSfcMvOkWwlCMgc0TaWr+30HWe3a4ltaBwTZhyTEggF5tJv8tbt" crossorigin="anonymous">
  <link rel="alternate" type="application/rss+xml"  href="https://quarkus.io/feed.xml" title="Quarkus">
  <script src="https://quarkus.io/assets/javascript/goan.js" type="text/javascript"></script>
  <script src="https://quarkus.io/assets/javascript/hl.js" type="text/javascript"></script>
</head>

<body class="guides">
  <!-- Google Tag Manager (noscript) -->
  <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-NJWS5L"
  height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
  <!-- End Google Tag Manager (noscript) -->

  <div class="nav-wrapper">
  <div class="grid-wrapper">
    <div class="width-12-12">
      <input type="checkbox" id="checkbox" />
      <nav id="main-nav" class="main-nav">
  <div class="container">
    <div class="logo-wrapper">
      
        <a href="/"><img src="/assets/images/quarkus_logo_horizontal_rgb_600px_reverse.png" class="project-logo" title="Quarkus"></a>
      
    </div>
    <label class="nav-toggle" for="checkbox">
      <i class="fa fa-bars"></i>
    </label>
    <div id="menu" class="menu">
      <span>
        <a href="/get-started/" class="">Get Started</a>
      </span>
      <span>
        <a href="/guides/" class="active">Guides</a>
      </span>
      <span>
        <a href="/community/" class="">Community</a>
      </span>
      <span>
        <a href="/support/" class="">Support</a>
      </span>
      <span>
        <a href="/blog/" class="">Blog</a>
      </span>
      <span>
        <a href="https://code.quarkus.io" class="button-cta secondary white">Start Coding</a>
      </span>
    </div>
  </div>
      </nav>
    </div>
  </div>
</div>

  <div class="content">
    <div class="guide">
  <div class="width-12-12">
    <h1 class="text-caps">Quarkus - Using Blaze-Persistence</h1>
    <div class="hide-mobile toc"><ul class="sectlevel1">
<li><a href="#setting-up-and-configuring-blaze-persistence">Setting up and configuring Blaze-Persistence</a></li>
<li><a href="#blaze-persistence-configuration-properties">Blaze-Persistence configuration properties</a></li>
<li><a href="#limitations">Limitations</a></li>
</ul></div>
    <div>
      <div id="preamble">
<div class="sectionbody">
<div class="paragraph">
<p>Blaze-Persistence offers a fluent query builder API on top of JPA with a deep Hibernate ORM integration that enables the
use of advanced SQL features like Common Table Expressions while staying in the realm of the JPA model.</p>
</div>
<div class="paragraph">
<p>On top of that, the Blaze-Persistence Entity-View module allows for DTO definitions that can be applied to business logic
queries which are then transformed to optimized queries that only fetch the data that is needed to construct the DTO instances.
The same DTO definitions can further be used for applying database updates, leading to a great reduction in boilerplate
code and removing the need for object mapping tools.</p>
</div>
<div class="admonitionblock note">
<table>
<tr>
<td class="icon">
<i class="fa icon-note" title="Note"></i>
</td>
<td class="content">
<div class="paragraph">
<p>This extension is developed by a third party and is part of the Quarkus Platform.</p>
</div>
</td>
</tr>
</table>
</div>
</div>
</div>
<div class="sect1">
<h2 id="setting-up-and-configuring-blaze-persistence"><a class="anchor" href="#setting-up-and-configuring-blaze-persistence"></a>Setting up and configuring Blaze-Persistence</h2>
<div class="sectionbody">
<div class="paragraph">
<p>The extension comes with default producers for <code>CriteriaBuilderFactory</code> and <code>EntityViewManager</code> that work out of the
box given a working Hibernate ORM configuration. For customization, overriding of the default producers is possible via the
standard mechanism as documented in the <a href="https://quarkus.io/guides/cdi-reference#default_beans">Quarkus CDI reference</a>.
This is needed if you need to set custom <a href="https://persistence.blazebit.com/documentation/entity-view/manual/en_US/index.html#anchor-configuration-properties">Blaze-Persistence properties</a>.</p>
</div>
<div class="paragraph">
<p>In Quarkus, you just need to:</p>
</div>
<div class="ulist">
<ul>
<li>
<p><code>@Inject</code> <code>CriteriaBuilderFactory</code> or <code>EntityViewManager</code> and use it</p>
</li>
<li>
<p>annotate your entity views with <code>@EntityView</code> and any other mapping annotation as usual</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>Add the following dependencies to your project:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>the Blaze-Persistence extension: <code>com.blazebit:blaze-persistence-integration-quarkus</code></p>
</li>
<li>
<p>further Blaze-Persistence integrations as needed:</p>
<div class="ulist">
<ul>
<li>
<p><code>blaze-persistence-integration-jackson</code> for <a href="https://persistence.blazebit.com/documentation/entity-view/manual/en_US/index.html#Jackson%20integration">Jackson</a></p>
</li>
<li>
<p><code>blaze-persistence-integration-jaxrs</code> for <a href="https://persistence.blazebit.com/documentation/entity-view/manual/en_US/index.html#jaxrs-integration">JAX-RS</a></p>
</li>
</ul>
</div>
</li>
</ul>
</div>
<div class="listingblock">
<div class="title">Example dependencies using Maven</div>
<div class="content">
<pre class="highlightjs highlight"><code data-lang="xml" class="language-xml hljs">&lt;dependencies&gt;
    &lt;!-- Blaze-Persistence specific dependencies --&gt;
    &lt;dependency&gt;
        &lt;groupId&gt;com.blazebit&lt;/groupId&gt;
        &lt;artifactId&gt;blaze-persistence-integration-quarkus&lt;/artifactId&gt;
    &lt;/dependency&gt;
    &lt;dependency&gt;
        &lt;groupId&gt;com.blazebit&lt;/groupId&gt;
        &lt;artifactId&gt;blaze-persistence-integration-hibernate-5.4&lt;/artifactId&gt;
        &lt;scope&gt;runtime&lt;/scope&gt;
    &lt;/dependency&gt;
&lt;/dependencies&gt;</code></pre>
</div>
</div>
<div class="paragraph">
<p>The use in native images requires a dependency on the entity view annotation processor that may be extracted into a separate <code>native</code> profile:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code data-lang="xml" class="language-xml hljs">&lt;profiles&gt;
    &lt;profile&gt;
        &lt;id&gt;native&lt;/id&gt;
        &lt;dependencies&gt;
            &lt;dependency&gt;
                &lt;groupId&gt;com.blazebit&lt;/groupId&gt;
                &lt;artifactId&gt;blaze-persistence-entity-view-processor&lt;/artifactId&gt;
                &lt;scope&gt;provided&lt;/scope&gt;
            &lt;/dependency&gt;
        &lt;/dependencies&gt;
    &lt;/profile&gt;
&lt;/profiles&gt;</code></pre>
</div>
</div>
<div class="paragraph">
<p>A <code>CriteriaBuilderFactory</code> and an <code>EntityViewManager</code> will be created based on the configured <code>EntityManagerFactory</code> as provided by the <a href="https://quarkus.io/guides/hibernate-orm">Hibernate-ORM extension</a>.</p>
</div>
<div class="paragraph">
<p>You can then access these beans via injection:</p>
</div>
<div class="listingblock">
<div class="title">Example application bean using Hibernate</div>
<div class="content">
<pre class="highlightjs highlight"><code data-lang="java" class="language-java hljs">@ApplicationScoped
public class SantaClausService {
    @Inject
    EntityManager em; <i class="conum" data-value="1"></i><b>(1)</b>
    @Inject
    CriteriaBuilderFactory cbf; <i class="conum" data-value="2"></i><b>(2)</b>
    @Inject
    EntityViewManager evm; <i class="conum" data-value="3"></i><b>(3)</b>

    @Transactional <i class="conum" data-value="4"></i><b>(4)</b>
    public List&lt;GiftView&gt; findAllGifts() {
        CriteriaBuilder&lt;Gift&gt; cb = cbf.create(em, Gift.class);
        return emv.applySetting(EntityViewSetting.create(GiftView.class), cb).getResultList();
    }
}</code></pre>
</div>
</div>
<div class="colist arabic">
<table>
<tr>
<td><i class="conum" data-value="1"></i><b>1</b></td>
<td>Inject the <code>EntityManager</code></td>
</tr>
<tr>
<td><i class="conum" data-value="2"></i><b>2</b></td>
<td>Inject the <code>CriteriaBuilderFactory</code></td>
</tr>
<tr>
<td><i class="conum" data-value="3"></i><b>3</b></td>
<td>Inject the <code>EntityViewManager</code></td>
</tr>
<tr>
<td><i class="conum" data-value="4"></i><b>4</b></td>
<td>Mark your CDI bean method as <code>@Transactional</code> so that a transaction is started or joined.</td>
</tr>
</table>
</div>
<div class="listingblock">
<div class="title">Example Entity</div>
<div class="content">
<pre class="highlightjs highlight"><code data-lang="java" class="language-java hljs">@Entity
public class Gift {
    private Long id;
    private String name;
    private String description;

    @Id @GeneratedValue(strategy = GenerationType.SEQUENCE, generator="giftSeq")
    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }


    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }
}</code></pre>
</div>
</div>
<div class="listingblock">
<div class="title">Example Entity-View</div>
<div class="content">
<pre class="highlightjs highlight"><code data-lang="java" class="language-java hljs">@EntityView(Gift.class)
public interface GiftView {

    @IdMapping
    Long getId();

    String getName();
}</code></pre>
</div>
</div>
<div class="listingblock">
<div class="title">Example updatable Entity-View</div>
<div class="content">
<pre class="highlightjs highlight"><code data-lang="java" class="language-java hljs">@UpdatableEntityView
@CreatableEntityView
@EntityView(Gift.class)
public interface GiftUpdateView extends GiftView {

    void setName(String name);
}</code></pre>
</div>
</div>
<div class="listingblock">
<div class="title">Example JAX-RS Resource</div>
<div class="content">
<pre class="highlightjs highlight"><code data-lang="java" class="language-java hljs">@Path("/gifts")
public class GiftResource {
    @Inject
    EntityManager entityManager;
    @Inject
    EntityViewManager entityViewManager;
    @Inject
    SantaClausService santaClausService;

    @POST
    @Consumes(MediaType.APPLICATION_JSON)
    @Produces(MediaType.APPLICATION_JSON)
    @Transactional
    public Response createGift(GiftUpdateView view) {
        entityViewManager.save(entityManager, view);
        return Response.created(URI.create("/gifts/" + view.getId())).build();
    }

    @GET
    @Produces(MediaType.APPLICATION_JSON)
    public List&lt;GiftView&gt; getGifts() {
        return santaClausService.findAllGifts();
    }

    @PUT
    @Path("{id}")
    @Consumes(MediaType.APPLICATION_JSON)
    @Produces(MediaType.APPLICATION_JSON)
    @Transactional
    public GiftView updateGift(@EntityViewId("id") GiftUpdateView view) {
        evm.save(em, view);
        return evm.find(em, GiftView.class, view.getId());
    }

    @Path("{id"})
    @GET
    @Produces(MediaType.APPLICATION_JSON)
    public GiftView getGift(@PathParam("id") Long id) {
        return return entityViewManager.find(entityManager, GiftView.class, view.getId());
    }
}</code></pre>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="blaze-persistence-configuration-properties"><a class="anchor" href="#blaze-persistence-configuration-properties"></a>Blaze-Persistence configuration properties</h2>
<div class="sectionbody">
<div class="paragraph">
<p>There are various optional properties useful to refine your <code>EntityViewManager</code> and <code>CriteriaBuilderFactory</code> or guide guesses of Quarkus.</p>
</div>
<div class="paragraph">
<p>There are no required properties, as long as the Hibernate ORM extension is configured properly.</p>
</div>
<div class="paragraph">
<p>When no property is set, the Blaze-Persistence defaults apply.</p>
</div>
<div class="paragraph">
<p>The configuration properties listed here allow you to override such defaults, and customize and tune various aspects.</p>
</div>
<div class="paragraph configuration-legend">
<p><span class="icon"><i class="fa fa-lock" title="Fixed at build time"></i></span> Configuration property fixed at build time - All other configuration properties are overridable at runtime</p>
</div>
<table class="tableblock frame-all grid-all stretch configuration-reference searchable">
<colgroup>
<col style="width: 80%;">
<col style="width: 10%;">
<col style="width: 10%;">
</colgroup>
<tbody>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><a id="quarkus-blaze-persistence_configuration"></a><a href="#quarkus-blaze-persistence_configuration">Configuration property</a></p></th>
<th class="tableblock halign-left valign-middle"><p class="tableblock">Type</p></th>
<th class="tableblock halign-left valign-middle"><p class="tableblock">Default</p></th>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><span class="icon"><i class="fa fa-lock" title="Fixed at build time"></i></span> <a id="quarkus-blaze-persistence_quarkus.blaze-persistence.template-eager-loading"></a><code><a href="#quarkus-blaze-persistence_quarkus.blaze-persistence.template-eager-loading">quarkus.blaze-persistence.template-eager-loading</a></code></p>
</div>
<div class="openblock description">
<div class="content">
<div class="paragraph">
<p>A boolean flag to make it possible to prepare all view template caches on startup. By default the eager loading of the view templates is disabled to have a better startup performance. Valid values for this property are <code>true</code> or <code>false</code>.</p>
</div>
</div>
</div></div></td>
<td class="tableblock halign-left valign-middle"><p class="tableblock">boolean</p></td>
<td class="tableblock halign-left valign-middle"></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><span class="icon"><i class="fa fa-lock" title="Fixed at build time"></i></span> <a id="quarkus-blaze-persistence_quarkus.blaze-persistence.default-batch-size"></a><code><a href="#quarkus-blaze-persistence_quarkus.blaze-persistence.default-batch-size">quarkus.blaze-persistence.default-batch-size</a></code></p>
</div>
<div class="openblock description">
<div class="content">
<div class="paragraph">
<p>An integer value that defines the default batch size for entity view attributes. By default the value is 1 and can be overridden either via <code>com.blazebit.persistence.view.BatchFetch#size()</code> or by setting this property via <code>com.blazebit.persistence.view.EntityViewSetting#setProperty</code>.</p>
</div>
</div>
</div></div></td>
<td class="tableblock halign-left valign-middle"><p class="tableblock">int</p></td>
<td class="tableblock halign-left valign-middle"></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><span class="icon"><i class="fa fa-lock" title="Fixed at build time"></i></span> <a id="quarkus-blaze-persistence_quarkus.blaze-persistence.expect-batch-mode"></a><code><a href="#quarkus-blaze-persistence_quarkus.blaze-persistence.expect-batch-mode">quarkus.blaze-persistence.expect-batch-mode</a></code></p>
</div>
<div class="openblock description">
<div class="content">
<div class="paragraph">
<p>A mode specifying if correlation value, view root or embedded view batching is expected. By default the value is <code>values</code> and can be overridden by setting this property via <code>com.blazebit.persistence.view.EntityViewSetting#setProperty</code>. Valid values are
 - <code>values</code>
 - <code>view_roots</code>
 - <code>embedding_views</code></p>
</div>
</div>
</div></div></td>
<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
<td class="tableblock halign-left valign-middle"></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><span class="icon"><i class="fa fa-lock" title="Fixed at build time"></i></span> <a id="quarkus-blaze-persistence_quarkus.blaze-persistence.updater.eager-loading"></a><code><a href="#quarkus-blaze-persistence_quarkus.blaze-persistence.updater.eager-loading">quarkus.blaze-persistence.updater.eager-loading</a></code></p>
</div>
<div class="openblock description">
<div class="content">
<div class="paragraph">
<p>A boolean flag to make it possible to prepare the entity view updater cache on startup. By default the eager loading of entity view updates is disabled to have a better startup performance. Valid values for this property are <code>true</code> or <code>false</code>.</p>
</div>
</div>
</div></div></td>
<td class="tableblock halign-left valign-middle"><p class="tableblock">boolean</p></td>
<td class="tableblock halign-left valign-middle"></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><span class="icon"><i class="fa fa-lock" title="Fixed at build time"></i></span> <a id="quarkus-blaze-persistence_quarkus.blaze-persistence.updater.disallow-owned-updatable-subview"></a><code><a href="#quarkus-blaze-persistence_quarkus.blaze-persistence.updater.disallow-owned-updatable-subview">quarkus.blaze-persistence.updater.disallow-owned-updatable-subview</a></code></p>
</div>
<div class="openblock description">
<div class="content">
<div class="paragraph">
<p>A boolean flag to make it possible to disable the strict validation that disallows the use of an updatable entity view type for owned relationships. By default the use is disallowed i.e. the default value is <code>true</code>, but since there might be strange models out there, it possible to allow this. Valid values for this property are <code>true</code> or <code>false</code>.</p>
</div>
</div>
</div></div></td>
<td class="tableblock halign-left valign-middle"><p class="tableblock">boolean</p></td>
<td class="tableblock halign-left valign-middle"></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><span class="icon"><i class="fa fa-lock" title="Fixed at build time"></i></span> <a id="quarkus-blaze-persistence_quarkus.blaze-persistence.updater.strict-cascading-check"></a><code><a href="#quarkus-blaze-persistence_quarkus.blaze-persistence.updater.strict-cascading-check">quarkus.blaze-persistence.updater.strict-cascading-check</a></code></p>
</div>
<div class="openblock description">
<div class="content">
<div class="paragraph">
<p>A boolean flag to make it possible to disable the strict cascading check that disallows setting updatable or creatable entity views on non-cascading attributes before being associated with a cascading attribute. When disabled, it is possible, like in JPA, that the changes done to an updatable entity view are not flushed when it is not associated with an attribute that cascades updates. By default the use is enabled i.e. the default value is <code>true</code>. Valid values for this property are <code>true</code> or <code>false</code>.</p>
</div>
</div>
</div></div></td>
<td class="tableblock halign-left valign-middle"><p class="tableblock">boolean</p></td>
<td class="tableblock halign-left valign-middle"></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><span class="icon"><i class="fa fa-lock" title="Fixed at build time"></i></span> <a id="quarkus-blaze-persistence_quarkus.blaze-persistence.updater.error-on-invalid-plural-setter"></a><code><a href="#quarkus-blaze-persistence_quarkus.blaze-persistence.updater.error-on-invalid-plural-setter">quarkus.blaze-persistence.updater.error-on-invalid-plural-setter</a></code></p>
</div>
<div class="openblock description">
<div class="content">
<div class="paragraph">
<p>A boolean flag that allows to switch from warnings to boot time validation errors when invalid plural attribute setters are encountered while the strict cascading check is enabled. When <code>true</code>, a boot time validation error is thrown when encountering an invalid setter, otherwise just a warning. This configuration has no effect when the strict cascading check is disabled. By default the use is disabled i.e. the default value is <code>false</code>. Valid values for this property are <code>true</code> or <code>false</code>.</p>
</div>
</div>
</div></div></td>
<td class="tableblock halign-left valign-middle"><p class="tableblock">boolean</p></td>
<td class="tableblock halign-left valign-middle"></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><span class="icon"><i class="fa fa-lock" title="Fixed at build time"></i></span> <a id="quarkus-blaze-persistence_quarkus.blaze-persistence.create-empty-flat-views"></a><code><a href="#quarkus-blaze-persistence_quarkus.blaze-persistence.create-empty-flat-views">quarkus.blaze-persistence.create-empty-flat-views</a></code></p>
</div>
<div class="openblock description">
<div class="content">
<div class="paragraph">
<p>A boolean flag that allows to specify if empty flat views should be created by default if not specified via <code>EmptyFlatViewCreation</code>. By default the creation of empty flat views is enabled i.e. the default value is <code>true</code>. Valid values for this property are <code>true</code> or <code>false</code>.</p>
</div>
</div>
</div></div></td>
<td class="tableblock halign-left valign-middle"><p class="tableblock">boolean</p></td>
<td class="tableblock halign-left valign-middle"></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><span class="icon"><i class="fa fa-lock" title="Fixed at build time"></i></span> <a id="quarkus-blaze-persistence_quarkus.blaze-persistence.expression-cache-class"></a><code><a href="#quarkus-blaze-persistence_quarkus.blaze-persistence.expression-cache-class">quarkus.blaze-persistence.expression-cache-class</a></code></p>
</div>
<div class="openblock description">
<div class="content">
<div class="paragraph">
<p>The full qualified expression cache implementation class name.</p>
</div>
</div>
</div></div></td>
<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
<td class="tableblock halign-left valign-middle"></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><span class="icon"><i class="fa fa-lock" title="Fixed at build time"></i></span> <a id="quarkus-blaze-persistence_quarkus.blaze-persistence.inline-ctes"></a><code><a href="#quarkus-blaze-persistence_quarkus.blaze-persistence.inline-ctes">quarkus.blaze-persistence.inline-ctes</a></code></p>
</div>
<div class="openblock description">
<div class="content">
<div class="paragraph">
<p>If set to true, the CTE queries are inlined by default. Valid values for this property are <code>true</code>, <code>false</code> or <code>auto</code>. Default is <code>true</code> which will always inline non-recursive CTEs. The <code>auto</code> configuration will only make use of inlining if the JPA provider and DBMS dialect support/require it. The property can be changed for a criteria builder before constructing a query.</p>
</div>
</div>
</div></div></td>
<td class="tableblock halign-left valign-middle"><p class="tableblock">boolean</p></td>
<td class="tableblock halign-left valign-middle"></td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="sect1">
<h2 id="limitations"><a class="anchor" href="#limitations"></a>Limitations</h2>
<div class="sectionbody">
<div class="dlist">
<dl>
<dt class="hdlist1">Apache Derby</dt>
<dd>
<p>Blaze-Persistence currently does not come with support for Apache Derby.
This limitation could be lifted in the future, if there&#8217;s a compelling need for it and if someone contributes it.</p>
</dd>
</dl>
</div>
</div>
</div>
    </div>
  </div>
</div>

  </div>

  <div class="content project-footer">
  <div class="footer-section">
    <div class="logo-wrapper">
      <a href="/"><img src="/assets/images/quarkus_logo_horizontal_rgb_reverse.svg" class="project-logo" title="Quarkus"></a>
    </div>
  </div>
  <div class="grid-wrapper">
    <p class="grid__item width-3-12">Quarkus is open. All dependencies of this project are available under the <a href='https://www.apache.org/licenses/LICENSE-2.0' target='_blank'>Apache Software License 2.0</a> or compatible license.<br /><br />This website was built with <a href='https://jekyllrb.com/' target='_blank'>Jekyll</a>, is hosted on <a href='https://pages.github.com/' target='_blank'>Github Pages</a> and is completely open source. If you want to make it better, <a href='https://github.com/quarkusio/quarkusio.github.io' target='_blank'>fork the website</a> and show us what you’ve got.</p>

    
      <div class="width-1-12 project-links">
        <span>Navigation</span>
        <ul class="footer-links width-1-12">
          
            <li><a href="/">Home</a></li>
          
            <li><a href="/guides">Guides</a></li>
          
            <li><a href="/community/#contributing">Contribute</a></li>
          
            <li><a href="/faq">FAQ</a></li>
          
            <li><a href="/get-started">Get Started</a></li>
          
        </ul>
      </div>
    
      <div class="width-1-12 project-links">
        <span>Contribute</span>
        <ul class="footer-links width-1-12">
          
            <li><a href="https://twitter.com/quarkusio">Follow us</a></li>
          
            <li><a href="https://github.com/quarkusio">GitHub</a></li>
          
            <li><a href="/security">Security&nbsp;policy</a></li>
          
        </ul>
      </div>
    
      <div class="width-1-12 project-links">
        <span>Get Help</span>
        <ul class="footer-links width-1-12">
          
            <li><a href="https://groups.google.com/forum/#!forum/quarkus-dev">Forums</a></li>
          
            <li><a href="https://quarkusio.zulipchat.com">Chatroom</a></li>
          
        </ul>
      </div>
    

    
      <div class="width-3-12 more-links">
        <span>Quarkus is made of community projects</span>
        <ul class="footer-links">
          
            <li><a href="https://vertx.io/" target="_blank">Eclipse Vert.x</a></li>
          
            <li><a href="https://microprofile.io" target="_blank">Eclipse MicroProfile</a></li>
          
            <li><a href="https://hibernate.org" target="_blank">Hibernate</a></li>
          
            <li><a href="https://netty.io" target="_blank">Netty</a></li>
          
            <li><a href="https://resteasy.github.io" target="_blank">RESTEasy</a></li>
          
            <li><a href="https://camel.apache.org" target="_blank">Apache Camel</a></li>
          
            <li><a href="https://code.quarkus.io/" target="_blank">And many more...</a></li>
          
        </ul>
      </div>
    
  </div>
</div>
  <div class="content redhat-footer">
  <div class="grid-wrapper">
    <span class="licence">
      <i class="fab fa-creative-commons"></i><i class="fab fa-creative-commons-by"></i> <a href="https://creativecommons.org/licenses/by/3.0/" target="_blank">CC by 3.0</a> | <a href="https://www.redhat.com/en/about/privacy-policy">Privacy Policy</a>
    </span>
    <span class="redhat">
      Sponsored by
    </span>
    <span class="redhat-logo">
      <a href="https://www.redhat.com/" target="_blank"><img src="/assets/images/redhat_reversed.svg"></a>
    </span>
  </div>
</div>


  <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js" integrity="sha384-8gBf6Y4YYq7Jx97PIqmTwLPin4hxIzQw5aDmUg/DDhul9fFpbbLcLh3nTIIDJKhx" crossorigin="anonymous"></script>
  <script type="text/javascript" src="/assets/javascript/mobile-nav.js"></script>
  <script type="text/javascript" src="/assets/javascript/scroll-down.js"></script>
  <script src="/assets/javascript/satellite.js" type="text/javascript"></script>
  <script src="https://quarkus.io/guides/javascript/config.js" type="text/javascript"></script>
  <script src="/assets/javascript/search-filter.js" type="text/javascript"></script>
  <script src="/assets/javascript/back-to-top.js" type="text/javascript"></script>
</body>

</html>
